package com.example.lib_base.utils

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData

/**
 * liveData事件总线
 */
class EventBus {
    //定义一个map集合 ，用来存储事件
    private val liveDataMap = HashMap<String,MutableLiveData<Any>>()
    //伴生对象 对外暴露
    companion object{
        val instance:EventBus by lazy { EventBus() }
    }
    //存入数据   点击按钮，发送事件
    fun <T> postEvent(key:String,value:T){
        //判断是否存在该事件，不存在 创建一个新的值   存在，更新值
        if(!liveDataMap.containsKey(key)){
            liveDataMap[key] = MutableLiveData()
        }
        (liveDataMap[key] as MutableLiveData<T>).value = value
    }
    //读取数据  点击按钮后，给出响应
    fun <T> getEvent(key: String):LiveData<T>{
        //判断是否存在该事件，不存在 创建一个新的值   存在，取出值
        if(!liveDataMap.containsKey(key)){
            liveDataMap[key] = MutableLiveData()
        }
        return liveDataMap[key] as LiveData<T>
    }
}